home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / source / FastCopVector2.s < prev    next >
Text File  |  1993-08-20  |  16KB  |  1,031 lines

  1.     Opt    c-
  2.     Section    "Base Code",Code_c
  3.  
  4. Piccy1    = $e0000
  5. Piccy2    = $e4000
  6.  
  7. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  8.     Bsr    KillSys      
  9.     
  10.     Lea    CopperList(pc),a0 
  11.     Lea    HardWare,a6      
  12.     Move.l    a0,Cop1Lc(a6)      
  13.     Move.w    #$83c0,DMACon(a6)
  14.     
  15.     Bsr    DoVector
  16.  
  17. Loop    Btst    #6,$Bfe001      
  18.     Bne    Loop      
  19.         
  20.     Bsr    ReturnSys      
  21.     Movem.l    (sp)+,d0-d7/a0-a6 
  22.     Moveq    #0,d0      
  23.     Rts
  24.  
  25. CalcVector    Lea    ZRot(pc),a0    
  26. TryAgain    Move.w    (a0),d0
  27.     Btst    #15,d0
  28.     Beq    OnZero    
  29.     Add.w    #360,(a0)
  30.     Bra    TryAgain
  31.     
  32. OnZero    Cmp.w    #359,(a0)
  33.     Ble    NotOverZRot    
  34.     Sub.w    #360,(a0)    
  35.     
  36. NotOverZRot    Move.l    ObjectPt(pc),a1
  37.     Lea    PointsAm(pc),a5
  38.     Move.w    (a1)+,(a5)
  39.     Lea    VecSineTable(pc),a3
  40.     Lea    RotPoints(pc),a4
  41.     Move.w    ZRot(pc),d5
  42.     Moveq.l    #9,d7
  43.     Add.w    d5,d5
  44.     Lea    SineVar1(pc),a5
  45.     Move.w    0(a3,d5.w),0(a5)
  46.     Add.w    #$B4,d5
  47.     Move.w    0(a3,d5.w),2(a5)
  48.     
  49. VecType3    Move.w    (a1)+,d0
  50.     Move.w    (a1)+,d1    
  51.     Asl.w    #5,d0
  52.     Asl.w    #5,d1
  53.     Moveq.l    #0,d2
  54.     Move.w    SineVar1(pc),d3
  55.     Move.w    SineVar2(pc),d4
  56.     Move.w    d3,d5
  57.     Move.w    d4,d6
  58.     Muls    d0,d4
  59.     Muls    d1,d3
  60.     Sub.l    d3,d4
  61.     Asr.l    d7,d4
  62.     Muls    d5,d0
  63.     Muls    d6,d1
  64.     Add.l    d0,d1
  65.     Asr.l    d7,d1
  66.     Move.w    d4,d0
  67.     Asr.w    #4,d2
  68.     Asr.w    #4,d0
  69.     Asr.w    #4,d1
  70.     Move.w    d2,a0
  71.     Moveq.l    #9,d4
  72.     Ext.l    d0
  73.     Lsl.l    d4,d0
  74.     Add.w    DistX(pc),d2
  75.     Add.w    #$0200,d2
  76.     Divs    d2,d0
  77.     Ext.l    d1
  78.     Lsl.l    d4,d1
  79.     Move.w    a0,d2
  80.     Add.w    DistY(pc),d2
  81.     Add.w    #$0200,d2
  82.     Divs    d2,d1
  83.     Add.w    XPos(pc),d0
  84.     Add.w    YPos(pc),d1
  85.     Move.w    d0,(a4)+
  86.     Move.w    d1,(a4)+
  87.     Lea    PointsAm(pc),a5
  88.     Sub.w    #1,(a5)
  89.     Bne    VecType3
  90.     Rts
  91.     
  92. DoXYSine    Lea    DistX(pc),a4
  93.     Lea    SineXPt(pc),a5
  94.     Bsr    DoSine
  95.     Asr.w    #1,d3
  96.     Move.w    d3,(a4)
  97.     Lea    DistY(pc),a4
  98.     Lea    SineYPt(pc),a5
  99.     Bsr    DoSine
  100.     Asr.w    #1,d3
  101.     Move.w    d3,(a4)
  102.     Lea    DistX(pc),a4
  103.     And.w    #4095,0(a4)
  104.     And.w    #4095,2(a4)
  105.     ;Move.w    0(a4),2(a4)
  106.     Rts
  107. DoSine    Lea    SineData(pc),a6
  108.     Moveq    #0,d2
  109.     Moveq    #0,d3
  110.     Move.l    08(a5),d0
  111.     Move.l    12(a5),d1
  112.     Add.l    d0,00(a5)
  113.     Add.l    d1,04(a5)
  114.     And.l    #$ffe,00(a5)    
  115.     And.l    #$ffe,04(a5)    
  116.     Move.l    00(a5),d0
  117.     Move.l    04(a5),d1    
  118.     Move.w    (a6,d0.l),d2
  119.     Move.w    (a6,d1.l),d3    
  120.     Add.l    d2,d3    
  121.     Asl.w    #3,d3
  122.     Add.w    #4096,d3
  123.     Rts        
  124.  
  125. WaitBlitter    Btst    #14,$2(a6)
  126.     Bne    WaitBlitter
  127.     Rts
  128.  
  129. KillSys    Bsr.s    SysWait    
  130.  
  131.     Move.l    $4,a6    
  132.     Lea    GFXName(pc),a1    
  133.     Moveq    #0,d0    
  134.     Jsr    -552(a6)    
  135.         
  136.     Lea    OldCop1(pc),a5
  137.     Move.l    $26(a0),$0(a5)    
  138.     Move.l    $32(a0),$4(a5)    
  139.     
  140.     Lea    HardWare,a6
  141.     Move.w    IntEnaR(a6),d0    
  142.     Move.w    DMAConR(a6),d1  
  143.     Or.w    #$8000,d0    
  144.     And.w    #$03ff,d1    
  145.     Or.w    #$8000,d1    
  146.     Move.w    d0,$8(a5)    
  147.     Move.w    d1,$a(a5)    
  148.     
  149.     Move.w    #$7fff,IntEna(a6) 
  150.     Move.w    #$7fff,DMACon(a6) 
  151.     Rts
  152.  
  153. SysWait    Move.w    #15,d7    
  154. SysWaitLoop    Move.l    #$05000,d1    
  155.     Bsr.s    WaitVBL    
  156.     Bsr.s    DoWaitVBL    
  157.     Dbf    d7,SysWaitLoop    
  158.     Rts
  159.  
  160. DoWaitVBL    Move.l    #$03000,d1    
  161. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  162.     Lea    HardWare,a6    
  163. WaitVBLLoop    Move.l    VPosR(a6),d0    
  164.     And.l    #$1ff00,d0    
  165.     Cmp.l    d1,d0    
  166.     Bne.s    WaitVBLLoop    
  167.     Movem.l    (sp)+,d0-d1/a6    
  168.     Rts        
  169.  
  170. ReturnSys    Lea    HardWare,a6    
  171.     Move.w    OldIntEna(pc),IntEna(a6)
  172.     Move.w    OldDMACon(pc),DMACon(a6)
  173.     Move.l    OldCop1(pc),Cop1lc(a6)
  174.     Move.l    OldCop2(pc),Cop2lc(a6)
  175.     Rts
  176.     
  177. SetNewObject    Lea    ObjectPt(pc),a1
  178.     Move.l    a4,(a1)
  179.     Moveq    #0,d0
  180.     Move.w    (a4)+,d0
  181.     Asl.w    #2,d0
  182.     Add.l    d0,a4
  183.     Lea    ConnectPtr(pc),a3
  184.     Move.l    a4,(a3)
  185.     Rts
  186.  
  187. DoObject    Lea    RotPoints(pc),a4
  188.     Move.l    ObjectPt(pc),a1    
  189.     Lea    XSize(pc),a2
  190.     Move.w    (a1)+,d7
  191.     Sub.w    #1,d7
  192.  
  193. Calculate    Move.w    (a1)+,d0
  194.     Move.w    (a1)+,d1
  195.  
  196.     And.w    #2047,0(a2)
  197.     And.w    #2047,2(a2)
  198.     
  199.     Move.w    0(a2),d2
  200.     Move.w    2(a2),d3
  201.     
  202.     Muls    d2,d0
  203.     Muls    d3,d1
  204.  
  205.     Asr.l    #8,d0
  206.     Asr.l    #8,d1
  207.  
  208.     Asr.l    #1,d0
  209.     Asr.l    #1,d1
  210.     
  211.     Add.w    #176,d0
  212.     Add.w    #148,d1
  213.     Move.w    d0,(a4)+
  214.     Move.w    d1,(a4)+
  215.     Dbf    d7,Calculate
  216.     Rts
  217.  
  218. DoVector    Lea    $Dff000,a6
  219.     Bsr    BlitterWait
  220. ClearPiccy1    Move.w    #$01F0,$40(a6)
  221.     Move.w    #0,$42(a6)
  222.     Move.w    #$ffff,$44(a6)
  223.     Move.w    #$ffff,$46(a6)
  224.     Move.w    #0,$74(a6)
  225.     Move.l    PiccyBase1(pc),$54(a6)
  226.     Move.w    #0,$66(a6)
  227.     Move.w    #$4AE0,$58(a6)
  228. ClearPiccy2    Move.w    #$01F0,$40(a6)
  229.     Move.w    #0,$42(a6)
  230.     Move.w    #$ffff,$44(a6)
  231.     Move.w    #$ffff,$46(a6)
  232.     Move.w    #0,$74(a6)
  233.     Move.l    PiccyBase2(pc),$54(a6)
  234.     Move.w    #0,$66(a6)
  235.     Move.w    #$4AE0,$58(a6)
  236.     
  237.     Bsr    SetCopperLists
  238.     Bsr    BlitterWait
  239.     Lea    VectorData(pc),a4
  240.     Bsr    SetNewObject
  241.  
  242.     Lea    $Dff000,a6
  243.     Move.w    #$f,$2E(a6)
  244.     Lea    CopperList1(pc),a0
  245.     Move.l    a0,$Dff080
  246.     
  247. LoopX    Bsr    DoXYSine
  248.     Bsr    CalcVector
  249.     Lea    ZRot(pc),a5
  250.     Add.w    #1,(a5)
  251.     Bsr    VBL
  252.     
  253.     Bsr    DoDrawLines
  254.     Btst    #6,$Bfe001
  255.     Bne    LoopX    
  256.     Rts
  257.     
  258. BlitterWait    Btst    #14,$2(a6)
  259.     Bne    BlitterWait
  260.     Rts
  261.     
  262. DoDrawLines    Lea    VV(pc),a4
  263.     Bsr    DoubleBuffer
  264.     Move.l    ConnectPtr(pc),a1
  265.     Lea    RotPoints(pc),a2
  266.     Lea    EndRotPoints(pc),a3
  267.     Move.w    (a1)+,d7
  268.     Subq    #1,d7
  269. DrawLineLoop    Move.w    (a1)+,d4
  270.     Move.w    (a1)+,d5
  271.     Add.w    d4,d4
  272.     Add.w    d4,d4
  273.     Add.w    d5,d5
  274.     Add.w    d5,d5
  275.     Movem.w    0(a2,d4.w),d0/d1
  276.     Movem.w    0(a2,d5.w),d2/d3
  277.     Cmp.w    d1,d3
  278.     Bpl.s    CheckSameY
  279.     Exg    d2,d0
  280.     Exg    d3,d1
  281. CheckSameY    Cmp.w    #0,d3
  282.     Bmi    DoNextConnect
  283.     Cmp.w    #$012B,d1
  284.     Bpl    DoNextConnect
  285.     Cmp.w    #0,d1
  286.     Bpl.s    ClipVec1
  287.     Sub.w    d2,d0
  288.     Sub.w    d3,d1
  289.     Move.w    d3,d4
  290.     Sub.w    #0,d4
  291.     Muls    d4,d0
  292.     Divs    d1,d0
  293.     Sub.w    d2,d0
  294.     Neg.w    d0
  295.     Move.w    #0,d1
  296.     Cmp.w    #$015F,d0
  297.     Bpl.s    ClipVec1
  298.     Bset    #4,Flags-VV(a4)
  299.     Move.w    d1,-(a3)
  300. ClipVec1    Cmp.w    #$012B,d3
  301.     Bmi.s    ClipVec2
  302.     Move.w    d2,d4
  303.     Sub.w    d0,d2
  304.     Move.w    d1,d5
  305.     Sub.w    d3,d5
  306.     Sub.w    #$012B,d3
  307.     Muls    d3,d2
  308.     Divs    d5,d2
  309.     Add.w    d4,d2
  310.     Move.w    #$012B,d3
  311.     Cmp.w    #$015F,d2
  312.     Bpl.s    ClipVec2
  313.     Bset    #4,Flags-VV(a4)
  314.     Move.w    d3,-(a3)
  315. ClipVec2    Cmp.w    #$015F,d0
  316.     Bpl.s    ClipVec3
  317.     Cmp.w    #0,d0
  318.     Bmi    ClipVec4
  319.     Cmp.w    #$015F,d2
  320.     Bpl    ClipVec5
  321.     Cmp.w    #0,d2
  322.     Bmi    SetCopperData
  323.     Bra    CopperLine1
  324.  
  325. ClipVec3    Cmp.w    #$015F,d2
  326.     Bpl    DoNextConnect1
  327.     Sub.w    d3,d1
  328.     Sub.w    d2,d0
  329.     Move.w    d2,d4
  330.     Sub.w    #$015F,d4
  331.     Muls    d4,d1
  332.     Divs    d0,d1
  333.     Sub.w    d3,d1
  334.     Neg.w    d1
  335.     Move.w    #$015F,d0
  336.     Bset    #2,Flags-VV(a4)
  337.     Move.w    d1,-(a3)
  338.     Cmp.w    #0,d2
  339.     Bmi    SetCopperData
  340.     Bra.s    CopperLine1
  341.  
  342. ClipVec4    Cmp.w    #0,d2
  343.     Bmi    DoNextConnect
  344.     Sub.w    d3,d1
  345.     Move.w    d2,d4
  346.     Sub.w    #0,d4
  347.     Sub.w    d2,d0
  348.     Muls    d4,d1
  349.     Divs    d0,d1
  350.     Sub.w    d3,d1
  351.     Neg.w    d1
  352.     Move.w    #0,d0
  353.     Cmp.w    #$015F,d2
  354.     Bpl    ClipVec5
  355.     Bra.s    CopperLine1
  356.  
  357. ClipVec5    Move.w    d3,d6
  358.     Sub.w    d1,d3
  359.     Move.w    d0,d5
  360.     Sub.w    d2,d5
  361.     Sub.w    #$015F,d2
  362.     Muls    d2,d3
  363.     Divs    d5,d3
  364.     Add.w    d6,d3
  365.     Move.w    #$015F,d2
  366.     Bset    #2,Flags-VV(a4)
  367.     Move.w    d3,-(a3)
  368.     Bra.s    CopperLine1
  369.  
  370. SetCopperData    Move.w    d3,d6
  371.     Sub.w    d1,d3
  372.     Move.w    d0,d5
  373.     Sub.w    d2,d5
  374.     Sub.w    #0,d2
  375.     Muls    d2,d3
  376.     Divs    d5,d3
  377.     Add.w    d6,d3
  378.     Move.w    #0,d2
  379. CopperLine1    Cmp.w    d1,d3
  380.     Beq    DoNextConnect
  381.     Addq.w    #1,d1
  382.     Move.l    #$10000,(a5)+
  383.     Move.w    d0,d5
  384.     Move.w    d1,d4
  385.     Muls    #$2C,d4
  386.     Asr.w    #3,d5
  387.     Add.w    d5,d4
  388.     Add.l    a6,d4
  389.     Move.w    #$4A,(a5)+
  390.     Move.w    d4,(a5)+
  391.     Move.w    #$56,(a5)+
  392.     Move.w    d4,(a5)+
  393.     Swap    d4
  394.     Move.w    #$48,(a5)+
  395.     Move.w    d4,(a5)+
  396.     Move.w    #$54,(a5)+
  397.     Move.w    d4,(a5)+
  398.     Move.w    d0,d5
  399.     And.w    #15,d5
  400.     Ror.w    #4,d5
  401.     Add.w    #$0B4A,d5
  402.     Move.w    #$40,(a5)+
  403.     Move.w    d5,(a5)+
  404.     Moveq.l    #0,d4
  405.     Sub.w    d2,d0
  406.     Bpl.s    CalcCop1
  407.     Neg.w    d0
  408.     Or.b    #1,d4
  409. CalcCop1    Sub.w    d3,d1
  410.     Bpl.s    CalcCop2
  411.     Neg.w    d1
  412.     Or.b    #2,d4
  413. CalcCop2    Cmp.w    d0,d1
  414.     Bmi.s    CheckOctants
  415.     Or.b    #4,d4
  416.     Exg    d0,d1
  417. CheckOctants    Move.b    Octants(pc,d4.w),d4
  418.     Add.w    d1,d1
  419.     Move.w    #$62,(a5)+
  420.     Move.w    d1,(a5)+
  421.     Sub.w    d0,d1
  422.     Bpl.s    SetDataInCop
  423.     Bset    #6,d4
  424. SetDataInCop    Move.w    #$42,(a5)+
  425.     Move.w    d4,(a5)+
  426.     Move.w    #$52,(a5)+
  427.     Move.w    d1,(a5)+
  428.     Move.w    d1,d3
  429.     Sub.w    d0,d1
  430.     Move.w    #$64,(a5)+
  431.     Move.w    d1,(a5)+
  432.     Lsl.w    #6,d0
  433.     Add.w    #$42,d0
  434.     Move.w    #$58,(a5)+
  435.     Move.w    d0,(a5)+
  436.     Bra.s    DoNextConnect
  437.  
  438. Octants    Dc.l    $1F1B1713
  439.     Dc.l    $0F070B03
  440. DoNextConnect    Dbra    d7,DrawLineLoop
  441.     Bra.s    FinalCopCalc
  442.  
  443. DoNextConnect1    Bset    #3,Flags-VV(a4)
  444.     Dbra    d7,DrawLineLoop
  445. FinalCopCalc    Btst    #2,Flags-VV(a4)
  446.     Beq.s    CopDataPlace
  447.     Lea    EndRotPoints(pc),a0
  448.     Cmp.l    a0,a3
  449.     Bne.s    CopDataPlace
  450.     Btst    #3,Flags-VV(a4)
  451.     Bne    EndCoordData
  452. CopDataPlace    Btst    #4,Flags-VV(a4)
  453.     Beq    CheckEndData
  454.     Btst    #3,Flags-VV(a4)
  455.     Beq    CheckEndData
  456.     Lea    EndRotPoints(pc),a0
  457.     Cmp.l    a0,a3
  458.     Bne    CheckEndData
  459.     Move.w    #$015F,d0
  460.     Move.w    #0,d1
  461.     Move.w    d0,d2
  462.     Move.w    #$012B,d3
  463.     Addq.w    #1,d1
  464.     Move.l    #$10000,(a5)+
  465.     Move.w    d0,d5
  466.     Move.w    d1,d4
  467.     Muls    #$2C,d4
  468.     Asr.w    #3,d5
  469.     Add.w    d5,d4
  470.     Add.l    a6,d4
  471.     Move.w    #$4A,(a5)+
  472.     Move.w    d4,(a5)+
  473.     Move.w    #$56,(a5)+
  474.     Move.w    d4,(a5)+
  475.     Swap    d4
  476.     Move.w    #$48,(a5)+
  477.     Move.w    d4,(a5)+
  478.     Move.w    #$54,(a5)+
  479.     Move.w    d4,(a5)+
  480.     Move.w    d0,d5
  481.     And.w    #15,d5
  482.     Ror.w    #4,d5
  483.     Add.w    #$0B4A,d5
  484.     Move.w    #$40,(a5)+
  485.     Move.w    d5,(a5)+
  486.     Moveq.l    #0,d4
  487.     Sub.w    d2,d0
  488.     Bpl.s    CalcCop1a
  489.     Neg.w    d0
  490.     Or.b    #1,d4
  491. CalcCop1a    Sub.w    d3,d1
  492.     Bpl.s    CalcCop2a
  493.     Neg.w    d1
  494.     Or.b    #2,d4
  495. CalcCop2a    Cmp.w    d0,d1
  496.     Bmi.s    CheckOctants1a
  497.     Or.b    #4,d4
  498.     Exg    d0,d1
  499. CheckOctants1a    Move.b    Octants1a(pc,d4.w),d4
  500.     Add.w    d1,d1
  501.     Move.w    #$62,(a5)+
  502.     Move.w    d1,(a5)+
  503.     Sub.w    d0,d1
  504.     Bpl.s    NoSet6Flag
  505.     Bset    #6,d4
  506. NoSet6Flag    Move.w    #$42,(a5)+
  507.     Move.w    d4,(a5)+
  508.     Move.w    #$52,(a5)+
  509.     Move.w    d1,(a5)+
  510.     Move.w    d1,d3
  511.     Sub.w    d0,d1
  512.     Move.w    #$64,(a5)+
  513.     Move.w    d1,(a5)+
  514.     Lsl.w    #6,d0
  515.     Add.w    #$42,d0
  516.     Move.w    #$58,(a5)+
  517.     Move.w    d0,(a5)+
  518.     Bra.s    CalcTheCopSet
  519.  
  520. Octants1a    Dc.l    $1F1B1713
  521.     Dc.l    $0F070B03
  522. CalcTheCopSet    Bra    EndCoordData
  523.  
  524. CheckEndData    Lea    EndRotPoints(pc),a0
  525.     Cmp.l    a0,a3
  526.     Bpl    EndCoordData
  527.     Movem.w    (a3)+,d1/d3
  528.     Cmp.w    d1,d3
  529.     Beq    DoCheckData
  530.     Move.w    #$015F,d0
  531.     Move.w    d0,d2
  532.     Cmp.w    d1,d3
  533.     Bpl.s    CheckYLine1
  534.     Exg    d2,d0
  535.     Exg    d3,d1
  536. CheckYLine1    Addq.w    #1,d1
  537.     Move.l    #$10000,(a5)+
  538.     Move.w    d0,d5
  539.     Move.w    d1,d4
  540.     Muls    #$2C,d4
  541.     Asr.w    #3,d5
  542.     Add.w    d5,d4
  543.     Add.l    a6,d4
  544.     Move.w    #$4A,(a5)+
  545.     Move.w    d4,(a5)+
  546.     Move.w    #$56,(a5)+
  547.     Move.w    d4,(a5)+
  548.     Swap    d4
  549.     Move.w    #$48,(a5)+
  550.     Move.w    d4,(a5)+
  551.     Move.w    #$54,(a5)+
  552.     Move.w    d4,(a5)+
  553.     Move.w    d0,d5
  554.     And.w    #15,d5
  555.     Ror.w    #4,d5
  556.     Add.w    #$0B4A,d5
  557.     Move.w    #$40,(a5)+
  558.     Move.w    d5,(a5)+
  559.     Moveq.l    #0,d4
  560.     Sub.w    d2,d0
  561.     Bpl.s    CalVars1
  562.     Neg.w    d0
  563.     Or.b    #1,d4
  564. CalVars1    Sub.w    d3,d1
  565.     Bpl.s    CalVars2
  566.     Neg.w    d1
  567.     Or.b    #2,d4
  568. CalVars2    Cmp.w    d0,d1
  569.     Bmi.s    CheckOctants1b
  570.     Or.b    #4,d4
  571.     Exg    d0,d1
  572. CheckOctants1b    Move.b    Octants1b(pc,d4.w),d4
  573.     Add.w    d1,d1
  574.     Move.w    #$62,(a5)+
  575.     Move.w    d1,(a5)+
  576.     Sub.w    d0,d1
  577.     Bpl.s    SetCopper1a
  578.     Bset    #6,d4
  579. SetCopper1a    Move.w    #$42,(a5)+
  580.     Move.w    d4,(a5)+
  581.     Move.w    #$52,(a5)+
  582.     Move.w    d1,(a5)+
  583.     Move.w    d1,d3
  584.     Sub.w    d0,d1
  585.     Move.w    #$64,(a5)+
  586.     Move.w    d1,(a5)+
  587.     Lsl.w    #6,d0
  588.     Add.w    #$42,d0
  589.     Move.w    #$58,(a5)+
  590.     Move.w    d0,(a5)+
  591.     Bra.s    DoCheckData
  592.  
  593. Octants1b    Dc.l    $1F1B1713
  594.     Dc.l    $0F070B03
  595. DoCheckData    Bra    CheckEndData
  596.  
  597. EndCoordData    Bclr    #2,Flags-VV(a4)
  598.     Bclr    #3,Flags-VV(a4)
  599.     Bclr    #4,Flags-VV(a4)
  600.     Move.l    a6,d0
  601.     Add.l    #$0338E,d0
  602.     Move.l    #$10000,(a5)+
  603.     Move.l    #$4009F0,(a5)+
  604.     Move.l    #$42001A,(a5)+
  605.     Move.l    #$640001,(a5)+
  606.     Move.l    #$660001,(a5)+
  607.     Move.l    #$44FFFF,(a5)+
  608.     Move.l    #$46FFFF,(a5)+
  609.     Move.w    #$52,(a5)+
  610.     Move.w    d0,(a5)+
  611.     Move.w    #$56,(a5)+
  612.     Move.w    d0,(a5)+
  613.     Swap    d0
  614.     Move.w    #$50,(a5)+
  615.     Move.w    d0,(a5)+
  616.     Move.w    #$54,(a5)+
  617.     Move.w    d0,(a5)+
  618.     Move.l    #$584AD6,(a5)+
  619.     Move.l    #$ffffFFFE,(a5)+
  620.     Rts
  621.  
  622. VBL    Move.l    $Dff004,d0
  623.     And.l    #$01FF00,d0
  624.     Cmp.l    #$012400,d0
  625.     Bne.s    VBL
  626.     Rts    
  627.  
  628. SetCopperLists    Move.l    #Piccy1,d0
  629.     Move.l    #Piccy2,d1
  630.     Lea    CopperList1(pc),a0
  631.     Lea    CopperList2(pc),a1
  632.     Lea    CopperBlitBPLS1(pc),a2
  633.     Lea    CopperBlitBPLS2(pc),a3    
  634.     Move.w    d0,6(a1)
  635.     Move.w    d0,6(a2)
  636.     Move.w    d1,6(a0)
  637.     Move.w    d1,6(a3)
  638.     Swap    d0
  639.     Swap    d1
  640.     Move.w    d0,2(a1)
  641.     Move.w    d0,2(a2)
  642.     Move.w    d1,2(a0)
  643.     Move.w    d1,2(a3)
  644.     Rts    
  645.  
  646. DoubleBuffer    Bchg    #0,Flags-VV(a4)
  647.     Btst    #0,Flags-VV(a4)
  648.     Bne    DBuffer1
  649.     Move.l    PiccyBase1(pc),a6
  650.     Lea    CopperList1(pc),a0
  651.     Move.l    a0,$Dff080
  652.     Lea    CopBlit1(pc),a5
  653.     Rts
  654.  
  655. DBuffer1    Move.l    PiccyBase2(pc),a6
  656.     Lea    CopperList2(pc),a0
  657.     Move.l    a0,$Dff080
  658.     Lea    CopBlit2(pc),a5
  659.     Rts    
  660.  
  661. GFXName    Dc.b    "graphics.library",0
  662.     Even
  663. OldCop1    Dc.l    0    
  664. OldCop2    Dc.l    0    
  665. OldIntEna    Dc.w    0    
  666. OldDmaCon    Dc.w    0    
  667. Screen    Dc.l    $c0000    
  668.  
  669. PiccyBase1    Dc.l    $e0000
  670. PiccyBase2    Dc.l    $e4000
  671.  
  672. VV    ; Var Pointer (pc)
  673.  
  674. SineVar1    Dc.w    0
  675. SineVar2    Dc.w    0
  676. SineVar3    Dc.w    0
  677. SineVar4    Dc.w    0
  678. SineVar5    Dc.w    0
  679. SineVar6    Dc.w    0
  680.  
  681. XRot    Dc.w    10
  682. YRot    Dc.w    10
  683. ZRot    Dc.w    10
  684.  
  685. PointsAm    Dc.w    0
  686.  
  687. DistX    Dc.w    500
  688. DistY    Dc.w    500
  689. TempDist    Dc.w    0
  690.  
  691. XPos    Dc.w    176
  692. YPos    Dc.w    148
  693.  
  694. SineXPt    Dc.l    0
  695. SineXPt1    Dc.l    0
  696. SineXAdd    Dc.l    70
  697. SineXAdd1    Dc.l    54
  698.  
  699. SineYPt    Dc.l    0
  700. SineYPt1    Dc.l    0
  701. SineYAdd    Dc.l    66
  702. SineYAdd1    Dc.l    44
  703.  
  704. ObjectPt    Dc.l    0
  705.  
  706. XSize    Dc.w    0
  707. YSize    Dc.w    0
  708.  
  709. MiscVar1    Dc.w    0
  710. MiscVar2    Dc.w    $07d0
  711. MiscVar3    Dc.w    10
  712. MiscVar4    Dc.w    0
  713. MiscVar5    Dc.w    0
  714. MiscVar6    Dc.w    1
  715. MiscVar7    Dc.w    $f441
  716. MiscVar8    Dc.w    $09e7
  717.     Dc.w    2
  718.     Dc.w    $7bd6
  719. MiscPtr1    Dc.l    0
  720.  
  721. ConnectPtr    Dc.l    0
  722. MiscVar9    Dc.w    $49
  723.  
  724. DrawX    Dc.w    $4
  725. DrawVar1    Dc.w    $fffc
  726. DrawVar2    Dc.w    $3
  727. DrawVar3    Dc.w    $1
  728. DrawVar4    Dc.w    $1
  729.  
  730. FrameWait    Dc.w    $18
  731.  
  732. VecType    Dc.w    14
  733.  
  734. StatVar    Dc.w    0
  735.  
  736. Flags    Dc.w    0
  737. Flags1    Dc.w    0
  738. Flags2    Dc.w    $49
  739. Flags3    Dc.w    $4d
  740. Flags4    Dc.w    $36
  741. Flags5    Dc.w    $4b
  742.  
  743. RotPoints    Dc.w    30,40
  744.     Dc.w    40,60
  745.     Dc.w    60,60
  746.     Dc.w    60,40
  747.     
  748.     Ds.w    600
  749. EndRotPoints    Dc.w    0
  750.  
  751. Connects    Dc.w    4
  752.     Dc.w    0,1
  753.     Dc.w    1,2
  754.     Dc.w    2,3
  755.     Dc.w    3,0    
  756.  
  757. Cmv    Macro
  758.     Dc.w    \2,\1
  759.     EndM
  760.     
  761. Cwt    Macro
  762.     Dc.w    (\1*$100)+$01,$fffe
  763.     EndM    
  764.     
  765. CwtBlit    Macro
  766.     Dc.w    $1,0
  767.     EndM    
  768.  
  769. Pal    Macro
  770.     Dc.w    $ffe1,$fffe
  771.     EndM    
  772.  
  773. EndCop    Macro
  774.     Dc.w    $ffff,$fffe
  775.     EndM    
  776.  
  777. CopperList    Cwt    $15    
  778.     Cmv    $0200,BplCon0    
  779.     Cmv    $00bb,BplCon1    
  780.     Cmv    $000a,BplCon2    
  781.     Cmv    $1681,DiwStrt    
  782.     Cmv    $36c1,DiwStop
  783.     Cmv    $0034,DdfStrt    
  784.     Cmv    $00c8,DdfStop    
  785.     Cmv    $0,BplMod1
  786.     Cmv    $0,BplMod2
  787.     
  788.     Cwt    $25        
  789.     Cmv    $0000,Color01
  790.     Cmv    $0fff,Color01
  791.     
  792. CopperBPLS    Cmv    $c,BplPt0h    
  793.     Cmv    $0,BplPt0l    
  794.     Cmv    $0,BplPt1h    
  795.     Cmv    $0,BplPt1l    
  796.     Cmv    $0,BplPt2h    
  797.     Cmv    $0,BplPt2l    
  798.     Cmv    $0,BplPt3h    
  799.     Cmv    $0,BplPt3l    
  800.     Cmv    $0,BplPt4h
  801.     Cmv    $0,BplPt4l 
  802.     
  803.     Cwt    $28    
  804.     Cmv    $1200,BplCon0    
  805.  
  806.     EndCop
  807.  
  808. CopperList1    Cmv    $0,BplPt0h
  809.     Cmv    $0,BplPt0l
  810.     Cmv    $0c71,DiwStrt
  811.     Cmv    $37d1,DiwStop
  812.     Cmv    $0030,DdfStrt
  813.     Cmv    $00d8,DdfStop
  814.  
  815.     Cmv    $1200,BplCon0
  816.     Cmv    $0000,BplCon1
  817.     Cmv    $0024,BplCon2
  818.     Cmv    $0,BplMod1
  819.     Cmv    $0,BplMod2
  820.  
  821.     Cmv    $0000,Color01
  822.     Cmv    $0fff,Color01
  823.         
  824.     CwtBlit    
  825.     Cmv    $01f0,BltCon0
  826.     Cmv    $0000,BltCon1
  827.     Cmv    $ffff,BltAFWM
  828.     Cmv    $ffff,BltALWM
  829.     Cmv    $0000,BltADat
  830. CopperBlitBPLS1    Cmv    $0000,BltDPth
  831.     Cmv    $0000,BltDPtl
  832.     Cmv    $0000,BltDMod
  833.     Cmv    $4ad6,BltSize
  834.     CwtBlit
  835.     Cmv    $002c,BltCMod
  836.     Cmv    $002c,BltDMod
  837.     Cmv    $ffff,BltBDat
  838.     Cmv    $8000,BltADat
  839.     
  840. CopBlit1    EndCop
  841.     Ds.l    $420
  842.  
  843. CopperList2    Cmv    $0,BplPt0h
  844.     Cmv    $0,BplPt0l
  845.     Cmv    $0c71,DiwStrt
  846.     Cmv    $37d1,DiwStop
  847.     Cmv    $0030,DdfStrt
  848.     Cmv    $00d8,DdfStop
  849.  
  850.     Cmv    $1200,BplCon0
  851.     Cmv    $0000,BplCon1
  852.     Cmv    $0024,BplCon2
  853.     Cmv    $0,BplMod1
  854.     Cmv    $0,BplMod2
  855.  
  856.     Cmv    $0000,Color01
  857.     Cmv    $0fff,Color01
  858.         
  859.     CwtBlit    
  860.     Cmv    $01f0,BltCon0
  861.     Cmv    $0000,BltCon1
  862.     Cmv    $ffff,BltAFWM
  863.     Cmv    $ffff,BltALWM
  864.     Cmv    $0000,BltADat
  865. CopperBlitBPLS2    Cmv    $0000,BltDPth
  866.     Cmv    $0000,BltDPtl
  867.     Cmv    $0000,BltDMod
  868.     Cmv    $4ad6,BltSize
  869.     CwtBlit
  870.     Cmv    $002c,BltCMod
  871.     Cmv    $002c,BltDMod
  872.     Cmv    $ffff,BltBDat
  873.     Cmv    $8000,BltADat
  874.     
  875. CopBlit2    EndCop
  876.     Ds.l    $420
  877.  
  878. VectorData    Incbin    Df1:SysData/ATX-Vek.DAT
  879. SineData    Incbin    Df1:SysData/Sine1024Bs.Dat
  880.     Incbin    Df1:SysData/Sine1024Bs.Dat
  881. VecSineTable    Incbin    Df1:SysData/VecSine.Data
  882.  
  883. ****Custom Chip Registers****
  884.  
  885. Hardware    = $Dff000
  886.  
  887. ;Control Registers
  888.  
  889. Dmaconr    = $002
  890. Vposr    = $004
  891. Vhposr    = $006
  892. Joy0dat    = $00A
  893. Joy1dat    = $00C
  894. Clxdat    = $00E
  895. Intenar    = $01C
  896. Intereqr    = $01E
  897. Copcon    = $02E
  898.  
  899. ;Blitter Registers
  900.  
  901. Bltcon0    = $040
  902. Bltcon1    = $042
  903. Bltafwm    = $044
  904. Bltalwm    = $046
  905. Bltcpth    = $048
  906. Bltcptl    = $04A
  907. Bltbpth    = $04C
  908. Bltbptl    = $04E
  909. Bltapth    = $050
  910. Bltaptl    = $052
  911. Bltdpth    = $054
  912. Bltdptl    = $056
  913. Bltsize    = $058
  914. Bltcmod    = $060
  915. Bltbmod    = $062
  916. Bltamod    = $064
  917. Bltdmod    = $066
  918. Bltcdat    = $070
  919. Bltbdat    = $072
  920. Bltadat    = $074
  921.  
  922. ;Copper Registers
  923.  
  924. Cop1lc    = $080
  925. Cop1lch    = $080
  926. Cop1lcl    = $082
  927. Cop2lc    = $084
  928. Cop2lch    = $084
  929. Cop2lcl    = $086
  930. Copjmp1    = $088
  931. Copjmp2    = $08A
  932. Diwstrt    = $08E
  933. Diwstop    = $090
  934. Ddfstrt    = $092
  935. Ddfstop    = $094
  936. Dmacon    = $096
  937. Clxcon    = $098
  938. Intena    = $09A
  939. Intreq    = $09C
  940.  
  941. ;BitPlane Registers 
  942.  
  943. BplCon0    = $100
  944. BplCon1    = $102
  945. BplCon2    = $104
  946. BplMod1    = $108
  947. BplMod2    = $10a
  948.  
  949. BplPt0h    = $0e0
  950. BplPt0l    = $0e2
  951. BplPt1h    = $0e4
  952. BplPt1l    = $0e6
  953. BplPt2h    = $0e8
  954. BplPt2l    = $0ea
  955. BplPt3h    = $0ec
  956. BplPt3l    = $0ee
  957. BplPt4h    = $0f0
  958. BplPt4l    = $0f2
  959. BplPt5h    = $0f4
  960. BplPt5l    = $0f6
  961.  
  962. ;Colour Registers
  963.  
  964. Color00    = $180
  965. Color01    = $182
  966. Color02    = $184
  967. Color03    = $186
  968. Color04    = $188
  969. Color05    = $18a
  970. Color06    = $18c
  971. Color07    = $18e
  972. Color08    = $190
  973. Color09    = $192
  974. Color10    = $194
  975. Color11    = $196
  976. Color12    = $198
  977. Color13     = $19a
  978. Color14     = $19c
  979. Color15     = $19e
  980. Color16     = $1a0
  981. Color17     = $1a2
  982. Color18     = $1a4
  983. Color19     = $1a6
  984. Color20     = $1a8
  985. Color21     = $1aa
  986. Color22     = $1ac
  987. Color23     = $1ae
  988. Color24     = $1b0
  989. Color25     = $1b2
  990. Color26     = $1b4
  991. Color27     = $1b6
  992. Color28     = $1b8
  993. Color29     = $1ba
  994. Color30     = $1bc
  995. Color31     = $1be
  996.  
  997. EcsNop    = $1fe
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.